/** 
 * Project Name:jd-orm 
 * File Name:ResourceManager.java 
 * Package Name:com.jd.orm.framework.core.transaction 
 * Date:2014-5-13上午12:45:48 
 * Copyright (c) 2014, liubing1@jd.com All Rights Reserved. 
 * 
 */  

package com.jd.orm.framework.core.transaction;

/** 
 * ClassName: ResourceManager <br/> 
 * Function: RESOURCE ACCESS CLASS <br/> 
 * Reason: TODO ADD REASON. <br/> 
 * date: 2014-5-13 上午12:45:48 <br/> 
 * 
 * @author  liubing1@jd.com 
 * @version  
 * @since up JDK 1.5 
 */

public interface IResourceManager<E> {
	
	/**
	 * 资源类型
	 * @return Class 类型
	 */
	Class<E> getResourceType();

	/**
	 * 根据活动状态active确定是否创建新的资源并且启动新的事务
	 * 通畅由事务的传播特性来决定
	 * @param definition 事务定义
	 * @param active 活动状态
	 * @return E 资源
	 */
	E beginTransaction(TransactionDefinition definition, boolean active);

	/**
	 * 提交并关闭资源
	 * @param resource 资源
	 */
	void commitTransaction(E resource);

	/**
	 * 回滚并关闭资源
	 * @param resource 资源
	 * @throws Exception 
	 */
	void rollbackTransaction(E resource) throws Exception;

	/**
	 * 关闭管理器并释放所有资源
	 */
	void close();
}
